﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using HerGoS.Interfaces;
using HerGoS.Administration.Entities;
using HerGoS.Viaticos.Entities.Interfaces;

namespace HerGoS.Viaticos.Entities
{
    [Serializable]
    public class Tramo : HGSEntity
    {
        #region Construction
        public Tramo()
		{
            Initializer();
        }
        private void Initializer()
        {
            this.ODescription = "Tramo";
        }
        #endregion

        #region DataMembers

        private Transporte _Transporte;
        private int _Orden;

        private Ciudad _CiudadOrigen;
        private DateTime? _FechaOrigen;
        private string _NroServicioOrigen;
        private string _CodigoOrigen;
        private string _ObservacionOrigen;
        private decimal _MontoTerminalOrigenIda;
        private decimal _MontoTerminalOrigenVuelta;
       
        //destino
        private Ciudad _CiudadDestino;
        private DateTime? _FechaDestino;
        private string _NroServicioDestino;
        private string _CodigoDestino;
        private string _ObservacionDestino;
        private decimal _MontoTerminalDestinoIda;
        private decimal _MontoTerminalDestinoVuelta;

        private decimal _DiasViaticos;
        private decimal _TarifaDiariaDestino;

      
        private decimal _PorcentajeViatico;
        private decimal _PorcentajeAplicacion;

        private bool _AnularMontoTerminalOrigenIda;
        private bool _AnularMontoTerminalDestinoIda;
        private decimal? _KmRecorridos;
        private decimal? _CocienteKmRecorridos;

        private bool _DiasViaticosManual;

      
        #endregion

        #region Properties


        public int Orden
        {
            get { return _Orden; }
            set { _Orden = value; }
        }

        public Transporte Transporte
        {
            get { return _Transporte; }
            set { this._Transporte = value; }
        }
        public Ciudad CiudadOrigen
        {
            get { return this._CiudadOrigen; }
            set { this._CiudadOrigen = value; }
        }

        public DateTime? FechaOrigen
        {
            get { return _FechaOrigen; }
            set { this._FechaOrigen = value; }
        }
        
        public string NroServicioOrigen
        {
            get { return this._NroServicioOrigen; }
            set { this._NroServicioOrigen = value; }
        }

        public string CodigoOrigen
        {
            get { return this._CodigoOrigen; }
            set { this._CodigoOrigen = value;}
        }

       
        public string ObservacionOrigen
        {
            get { return _ObservacionOrigen; }
            set { _ObservacionOrigen = value; }
        }


        public decimal MontoTerminalOrigenIda
        {
            get { return _MontoTerminalOrigenIda; }
            set { _MontoTerminalOrigenIda = value; }
        }
        [ObsoleteAttribute("No se usa mas este monto esta obsoleto.", false)] 
        public decimal MontoTerminalOrigenVuelta
        {
            get { return _MontoTerminalOrigenVuelta; }
            set { _MontoTerminalOrigenVuelta = value; }
        }
        //
        public Ciudad CiudadDestino
        {
            get { return this._CiudadDestino; }
            set { this._CiudadDestino = value; }
        }

        public DateTime? FechaDestino
        {
            get { return _FechaDestino; }
            set { this._FechaDestino = value; }
        }

        public string NroServicioDestino
        {
            get { return this._NroServicioDestino; }
            set { this._NroServicioDestino = value; }
        }

        public string CodigoDestino
        {
            get { return this._CodigoDestino; }
            set { this._CodigoDestino = value; }
        }
        
        public string ObservacionDestino
        {
            get { return _ObservacionDestino; }
            set { _ObservacionDestino = value; }
        }
        
        public decimal MontoTerminalDestinoIda
        {
            get { return _MontoTerminalDestinoIda; }
            set { this._MontoTerminalDestinoIda = value; }
        }

        public decimal MontoTerminalDestinoVuelta
        {
            get { return _MontoTerminalDestinoVuelta; }
            set { _MontoTerminalDestinoVuelta = value; }
        }

      

       public decimal TarifaDiariaDestino
        {
           get { return _TarifaDiariaDestino; }
           set { _TarifaDiariaDestino = value; }
       }
        
       public decimal PorcentajeViatico
       {
           get { return _PorcentajeViatico; }
           set { _PorcentajeViatico = value; }
       }
       
        public decimal PorcentajeAplicacion
        {
            get { return _PorcentajeAplicacion; }
            set { _PorcentajeAplicacion = value; }
        }

        public bool AnularMontoTerminalOrigenIda
        {
            get { return _AnularMontoTerminalOrigenIda; }
            set { _AnularMontoTerminalOrigenIda = value; }
        }  
        
        
        public bool AnularMontoTerminalDestinoIda
        {
            get { return _AnularMontoTerminalDestinoIda; }
            set { _AnularMontoTerminalDestinoIda = value; }
        }

        public decimal? kmRecorridos
        {
            get { return _KmRecorridos; }
            set { _KmRecorridos = value; }
        }


        public decimal? CocienteKmRecorridos
        {
            get { return _CocienteKmRecorridos; }
            set { _CocienteKmRecorridos = value; }
        }
        
   

        public bool DiasViaticosManual
        {
            get { return _DiasViaticosManual; }
            set { _DiasViaticosManual = value; }
        }

        public decimal DiasViaticos
        {
            get { return this._DiasViaticos; }
            set { _DiasViaticos = value; }

        }

        

        #endregion

        #region Overrides
        /// <summary>
        /// Returns the string of the object.
        /// </summary>
        /// <returns>String</returns>
        public override String ToString()
        {
            return this.ToString();
        }

        #endregion






       
    }
}
